package conf

import (
	"gopkg.in/yaml.v3"
	"os"
	"sync"
)

var (
	global *Config
	once   sync.Once
)

// C 全局配置对象
func C() *Config {
	if global == nil {
		panic("config init failed")
	}
	return global
}

// LoadConfigFromYaml 从toml中添加配置文件, 并初始化全局对象
func LoadConfigFromYaml(filePath string) error {
	once.Do(func() {
		cfg := newConfig()
		file, err := os.Open(filePath)
		if err != nil {
			panic(err.Error())
		}
		decoder := yaml.NewDecoder(file)
		err = decoder.Decode(cfg)
		if err != nil {
			panic(err.Error())
		}
		// 加载全局配置单例
		global = cfg
	})
	return nil
}
